#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

int g_val = 100;
int un_g_val;

int main()
{
    
    printf("test: %p\n", main);
    printf("init: %p\n", &g_val);
    printf("uninit: %p\n", &un_g_val);

    char *p1 = (char*)malloc(16);
    char *p2 = (char*)malloc(16);
    char *p3 = (char*)malloc(16);
    char *p4 = (char*)malloc(16);
  
    printf("heap: %p\n", p1);
    printf("heap: %p\n", p2);
    printf("heap: %p\n", p3);
    printf("heap: %p\n", p4);
    
    printf("stack: %p\n", &p1);
    printf("stack: %p\n", &p2);
    printf("stack: %p\n", &p3);
    printf("stack: %p\n", &p4);

    
    //printf("%s\n", getenv("HELLO"));
    //printf("%s\n", getenv("PATH"));

   //extern char **environ;
   //int i = 0;
   //for(i = 0; environ[i]; i++)
   //{
   // 
   //    printf("%s\n", environ[i]);
   //}
    
    //int i = 0;
    //for(i = 0; env[i]; i++)
    //{
    //    printf("%s\n", env[i]);
    //}
    
    
    //printf("hello\n");


    //while(1)
    //{
    //    printf("hello\n");
    //    sleep(1);
    //}
    
    
    
   // pid_t id = fork();
   // int a = 5;

   // if(id == 0)
   // {
        //child
   //     while(1)
   // {
   //         printf("I am child, pid:%d, ppid:%d\n", getpid(), getppid());
   //         sleep(1);
   //     }
   // }
   // else 
   // {
        //father 
   //     while(a)
   //     {   
   //         printf("I am father, pid:%d, [%d]\n", getpid(), a--);
   //         sleep(1);
   //     }
   // }
    return 0;
}
